package cc.decat.escript.runtime;

public enum Opcode {
    NOP,

    LOAD_NULL,
    LOAD_TRUE,
    LOAD_FALSE,
    LOAD_CONST,
    LOAD_LOCAL_VAR,
    LOAD_UP_VAR,
    LOAD_GLOBAL_VAR,
    LOAD_SUBSCR,
    LOAD_ATTR,

    STORE_LOCAL_VAR,
    STORE_UP_VAR,
    STORE_GLOBAL_VAR,
    STORE_SUBSCR,
    STORE_ATTR,

    BINARY_ADD,
    BINARY_SUB,
    BINARY_MUL,
    BINARY_DIV,
    BINARY_MOD,

    COMPARE_LT,
    COMPARE_LTE,
    COMPARE_GT,
    COMPARE_GTE,
    COMPARE_EQ,
    COMPARE_NEQ,

    JUMP,
    JUMP_IF_FALSE,
    JUMP_IF_FALSE_OR_POP,
    JUMP_IF_TRUE_OR_POP,
    CONTINUE,
    BREAK,

    CALL_FUNCTION,
    CALL_METHOD,
    RETURN_VALUE,
    REMOVE_TOP,

    MAKE_FUNCTION,
    MAKE_LAMBDA,
    MAKE_CLOSURE,

    ENTRY_BLOCK,
    LEAVE_BLOCK,

    IMPORT_MODULE,

    BUILD_LIST,
    BUILD_DICT,
}
